90 WIDTH "scrn:", 80
95 SCREEN 0,1,0,0
100 TITLE$ = "Family Group Sheet Program"
105 TITLE$ = TITLE$ + " ON DISPLAY"
110 VERSION$ = "Version 2.0"
115 COPY1$ = "Copyright (c) 1983, 1984, by:"
120 COPY2$ = "Melvin O. Duke"
125 PRICE$ = "$35"
130 ADDR1$ = "Melvin O. Duke"
135 ADDR2$ = "P. O. Box 20836"
140 ADDR3$ = "San Jose, CA  95160"
145 REM Dimension Statements go here
150 DIM PA.ID(1000), CH.ID(1000), PERS.NO(400), M.NO(400)
160 DIM PERS(2), FORM$(49)
170 REM Produce the first screen
175 KEY OFF : CLS
180 REM Draw the outer double box
185 R1 = 1 : C1 = 1 : R2 = 24 : C2 = 79 : GOSUB 400
190 REM Find the title location
195 TITLE.POS = 40 - INT(LEN(TITLE$)/2)
200 REM Draw the title box
205 R1=3:C1=TITLE.POS-2:R2=6:C2=TITLE.POS+LEN(TITLE$)+1:GOSUB 600
210 REM Print the title
215 LOCATE 4,TITLE.POS : PRINT TITLE$
220 LOCATE 5,40-INT(LEN(VERSION$)/2) :  PRINT VERSION$;
225 REM Draw the Contribution box
230 R1 = 8 : C1 = 19 : R2 = 17 : C2 = 62 : GOSUB 400
235 REM Request the Contribution
240 LOCATE 9,23 : PRINT "If you are using these programs, and"
245 LOCATE 10,21 : PRINT "finding them of value, your contribution"
250 LOCATE 11,23 : PRINT "("+PRICE$+" suggested) will be anticipated."
255 REM Draw the Mailing Label
260 R1 = 12 : C1 = 28 : R2 = 16 : C2 = 52 : GOSUB 600
265 REM Print the Name and Address
270 LOCATE 13,40-INT(LEN(ADDR1$)/2) :  PRINT ADDR1$;
275 LOCATE 14,40-INT(LEN(ADDR2$)/2) :  PRINT ADDR2$;
280 LOCATE 15,40-INT(LEN(ADDR3$)/2) :  PRINT ADDR3$;
285 REM Draw the Copyright box
290 R1 = 19 : C1 = 24 : R2 = 22 : C2 = 56 : GOSUB 400
295 REM Print the Copyright
300 LOCATE 20,40-INT(LEN(COPY1$)/2) :  PRINT COPY1$;
305 LOCATE 21,40-INT(LEN(COPY2$)/2) :  PRINT COPY2$;
310 GOTO 740
400 REM subroutine to print a double box
410 FOR I = R1 + 1 TO R2 - 1
420  LOCATE I, C1 : PRINT CHR$(186);
430  LOCATE I, C2 : PRINT CHR$(186);
440 NEXT I
450 FOR J = C1 + 1 TO C2 - 1
460  LOCATE R1, J : PRINT CHR$(205);
470  LOCATE R2, J : PRINT CHR$(205);
480 NEXT J
490  LOCATE R1, C1 : PRINT CHR$(201);
500  LOCATE R1, C2 : PRINT CHR$(187);
510  LOCATE R2, C1 : PRINT CHR$(200);
520  LOCATE R2, C2 : PRINT CHR$(188);
530 RETURN
600 REM subroutine to print a single box
610 FOR I = R1 + 1 TO R2 - 1
620  LOCATE I, C1 : PRINT CHR$(179);
630  LOCATE I, C2 : PRINT CHR$(179);
640 NEXT I
650 FOR J = C1 + 1 TO C2 - 1
660  LOCATE R1, J : PRINT CHR$(196);
670  LOCATE R2, J : PRINT CHR$(196);
680 NEXT J
690  LOCATE R1, C1 : PRINT CHR$(218);
700  LOCATE R1, C2 : PRINT CHR$(191);
710  LOCATE R2, C1 : PRINT CHR$(192);
720  LOCATE R2, C2 : PRINT CHR$(217);
730 RETURN
740 REM ask user to press a key to continue
750 LOCATE 25,1
760 PRINT "Have Data Diskette(s) in Place, then Press any key to continue.";
770 K$ = INKEY$ : IF K$ = "" THEN 770
780 CLS
840 CLS
1000 REM Family Group Sheet Program.
1010 REM By:  Melvin O. Duke.  Last Updated:  24 December 1983.
1020 REM Routine to obtain Printer Information
1030 LOCATE 21,1 : PRINT "Make sure that the Printer is On and Ready"
1040 LOCATE 22,1 : PRINT "Make sure that the correct Diskette(s) are in place."
1050 LOCATE 23,1 : PRINT "Then press any key"
1060 A$ = INKEY$ : IF A$ = "" THEN 1060
1070 CLS
1080 REM Set for Wide Printing.
1110 WIDTH "lpt1:",132  'For printing Genealogy Forms
1120 REM Ask user about his Printer
1130 LOCATE 20,1 : PRINT "How wide is the Paper";
1140 LOCATE 21,3 : COLOR 0,7 : PRINT "1"; : COLOR 7,0
1150 LOCATE 21,6 : PRINT "8 - 1/2 inches";
1160 LOCATE 22,3 : COLOR 0,7 : PRINT "2"; : COLOR 7,0
1170 LOCATE 22,6 : PRINT "14 inches";
1180 LOCATE 23,1 : PRINT SPACE$(79);
1190 LOCATE 23,1 : INPUT "Enter 1 or 2"; REPLY$
1200 REM verify input
1210 IF VAL(REPLY$) = 1 OR VAL(REPLY$) = 2 THEN 1240
1220 LOCATE 19,1 : PRINT "Error in Previous Reply";
1230 GOTO 1130
1240 LOCATE 19,1 : PRINT SPACE$(79);
1250 LOCATE 20,1 : PRINT SPACE$(79);
1260 LOCATE 21,1 : PRINT SPACE$(79);
1270 LOCATE 22,1 : PRINT SPACE$(79);
1280 LOCATE 23,1 : PRINT SPACE$(79);
1290 WIDE = VAL(REPLY$)
1300 LOCATE 3,1
1310 IF WIDE = 1 THEN PRINT "Using 8-1/2 inch width paper"; : GOTO 1330
1320 PRINT "Using 14 inch width paper";
1330 LOCATE 20,1 : PRINT "How Long is the Paper";
1340 LOCATE 21,3 : COLOR 0,7 : PRINT "1"; : COLOR 7,0
1350 LOCATE 21,6 : PRINT "8 - 1/2 inches";
1360 LOCATE 22,3 : COLOR 0,7 : PRINT "2"; : COLOR 7,0
1370 LOCATE 22,6 : PRINT "11 inches";
1380 LOCATE 23,1 : PRINT SPACE$(79);
1390 LOCATE 23,1 : INPUT "Enter 1 or 2"; REPLY$
1400 REM verify input
1410 IF VAL(REPLY$) = 1 OR VAL(REPLY$) = 2 THEN 1440
1420 LOCATE 19,1 : PRINT "Error in Previous Reply";
1430 GOTO 1330
1440 LOCATE 19,1 : PRINT SPACE$(79);
1450 LOCATE 20,1 : PRINT SPACE$(79);
1460 LOCATE 21,1 : PRINT SPACE$(79);
1470 LOCATE 22,1 : PRINT SPACE$(79);
1480 LOCATE 23,1 : PRINT SPACE$(79);
1490 LENGTH = VAL(REPLY$)
1500 LOCATE 5,1
1510 IF LENGTH = 1 THEN PRINT "Using 8-1/2 inch length paper"; : GOTO 1530
1520 PRINT "Using 11 inch length paper";
1530 LOCATE 20,1 : PRINT "Describe the Forms to be used";
1540 LOCATE 21,3 : COLOR 0,7 : PRINT "1"; : COLOR 7,0
1550 LOCATE 21,6 : PRINT "Continuous";
1560 LOCATE 22,3 : COLOR 0,7 : PRINT "2"; : COLOR 7,0
1570 LOCATE 22,6 : PRINT "Single Sheets";
1580 LOCATE 23,1 : PRINT SPACE$(79);
1590 LOCATE 23,1 : INPUT "Enter 1 or 2"; REPLY$
1600 REM verify input
1610 IF VAL(REPLY$) = 1 OR VAL(REPLY$) = 2 THEN 1640
1620 LOCATE 19,1 : PRINT "Error in Previous Reply";
1630 GOTO 1530
1640 LOCATE 19,1 : PRINT SPACE$(79);
1650 LOCATE 20,1 : PRINT SPACE$(79);
1660 LOCATE 21,1 : PRINT SPACE$(79);
1670 LOCATE 22,1 : PRINT SPACE$(79);
1680 LOCATE 23,1 : PRINT SPACE$(79);
1690 FORMS = VAL(REPLY$)
1700 LOCATE 7,1
1710 IF FORMS = 1 THEN PRINT "Using Continuous forms"; : GOTO 1730
1720 PRINT "Using Single Sheets";
1730 LOCATE 20,1 : PRINT "Is the above information correct?"
1740 LOCATE 21,1 : INPUT "Enter 'y' or 'n' for 'yes' or 'no'"; REPLY$
1750 IF LEFT$(REPLY$,1) = "y" OR LEFT$(REPLY$,1) = "Y" THEN 1760 ELSE 1070
1760 CLS
1780 REM Read the Parent/Child Index
1790 OPEN "a:pcindex" FOR INPUT AS #1
1800 LOCATE 4,1 : PRINT "Open the Parent/Child Index";
1810 INPUT #1, PC.COUNT
1820 FOR I = 1 TO PC.COUNT
1830 LOCATE 5,1 : PRINT "Reading Index Record #:";I;
1840  INPUT #1, PA.ID(I), CH.ID(I)
1850 NEXT I
1860 CLOSE #1
1870 REM Read the Marriage Index
1880 LOCATE 7,1 : PRINT "Open the Marriage Index";
1890 OPEN "a:mindex" FOR INPUT AS #2
1900 INPUT #2, M.COUNT
1910 FOR I = 1 TO M.COUNT
1920 LOCATE 8,1 : PRINT "Reading Marriage Index Record #:";I:
1930  INPUT #2,PERS.NO(I), M.NO(I)
1940 NEXT I
1950 CLOSE #2
1960 REM Open the Persons File
1970 LOCATE 10,1 : PRINT "Open the Persons File"
1980 OPEN "a:persfile" AS #1 LEN = 256
1990 FIELD 1, 5 AS F1$, 20 AS F2$, 30 AS F3$, 2 AS F4$, 5 AS F5$, 5 AS F6$, 5 AS F7$, 11 AS F8$, 18 AS F9$, 16 AS F10$, 16 AS F11$, 11 AS F12$, 18 AS F13$, 16 AS F14$, 16 AS F15$, 11 AS F16$, 18 AS F17$, 16 AS F18$, 16 AS F19$
2000 REM open the Marriages File
2010 LOCATE 12,1 : PRINT "Open the Marriage File"
2020 OPEN "a:marrfile" AS #2 LEN = 128
2030 FIELD 2, 5 AS M1$, 5 AS M2$, 5 AS M3$, 5 AS M4$, 11 AS M5$, 18 AS M6$, 16 AS M7$, 16 AS M8$, 45 AS M9$
2040 REM Open the Ordinance File
2050 LOCATE 14,1 : PRINT "Open the Ordinances File";
2060 OPEN "a:ordfile" AS #3 LEN = 256
2070 FIELD 3,5ASO1$,11ASO2$,11ASO3$,11ASO4$,5ASO5$,5ASO6$,11ASO7$,11ASO8$,11ASO9$,11ASO10$,11ASO11$,5ASO12$,11ASO13$,11ASO14$,11ASO15$,11ASO16$,11ASO17$,11ASO18$,11ASO19$,11ASO20$,11ASO21$,11ASO22$,11ASO23$,26ASO24$
2080 REM Obtain a Person Record from the User
2090 CLS : LOCATE 20,1
2100 INPUT "Enter the Record-number of a Marriage (0 to quit)";MARRIAGE
2110 IF MARRIAGE = 0 THEN 5040
2120 IF MARRIAGE < 1 OR MARRIAGE > 200 THEN CLS: GOTO 2080
2130 GOSUB 2140 : GOTO 2850
2140 REM Reset the Printer Characterisitcs for next page if required.
2150 IF FORMS = 1 THEN 2190  'Don't stop if forms are continuous
2160 REM Process Single Sheets
2170 PRINT "Press any key when next form is ready"
2180 A$ = INKEY$ : IF A$ = "" THEN 2180
2190 REM Reset paper sensing if required
2200 IF FORMS = 2 THEN LPRINT CHR$(27)"8";
2210 REM Reset paper length if required
2220 IF LENGTH = 1 THEN LPRINT CHR$(27)"C51";
2230 REM Reset Condensed Printing if required
2240 IF WIDE = 1 THEN LPRINT CHR$(15);
2250 RETURN
2260 REM Routine to do a Right-trim
2270 FOR J = 1 TO LEN(TEMP1$)
2280  IF RIGHT$(TEMP2$,1) = " " THEN TEMP2$ = LEFT$(TEMP2$,LEN(TEMP2$)-1) ELSE J = LEN(TEMP1$)
2290 NEXT J
2300 RETURN
2310 REM Routine to Extract Personal Information
2320 T1 = CVS(F1$)
2330 TEMP1$ = F2$ : TEMP2$ = F2$ : GOSUB 2260
2340 T2$ = TEMP2$
2350 TEMP1$ = F3$ : TEMP2$ = F3$ : GOSUB 2260
2360 T3$ = TEMP2$
2370 IF LEFT$(F4$,1) = "M" THEN T4$ = "M"
2380 IF LEFT$(F4$,1) = "F" THEN T4$ = "F"
2390 T5 = CVS(F5$)
2400 T6 = CVS(F6$)
2410 T7 = CVS(F7$)
2415 TEMP1$ = F8$ : TEMP2$ = F8$ : GOSUB 2260
2420 T8$ = TEMP2$
2430 TEMP1$ = F9$ : TEMP2$ = F9$ : GOSUB 2260
2440 T9$ = TEMP2$
2450 TEMP1$ = F10$ : TEMP2$ = F10$ : GOSUB 2260
2460 T10$ = TEMP2$
2470 TEMP1$ = F11$ : TEMP2$ = F11$ : GOSUB 2260
2480 T11$ = TEMP2$
2485 TEMP1$ = F12$ : TEMP2$ = F12$ : GOSUB 2260
2490 T12$ = TEMP2$
2500 TEMP1$ = F13$ : TEMP2$ = F13$ : GOSUB 2260
2510 T13$ = TEMP2$
2520 TEMP1$ = F14$ : TEMP2$ = F14$ : GOSUB 2260
2530 T14$ = TEMP2$
2540 TEMP1$ = F15$ : TEMP2$ = F15$ : GOSUB 2260
2550 T15$ = TEMP2$
2555 TEMP1$ = F16$ : TEMP2$ = F16$ : GOSUB 2260
2560 T16$ = TEMP2$
2570 TEMP1$ = F17$ : TEMP2$ = F17$ : GOSUB 2260
2580 T17$ = TEMP2$
2590 TEMP1$ = F18$ : TEMP2$ = F18$ : GOSUB 2260
2600 T18$ = TEMP2$
2610 TEMP1$ = F19$ : TEMP2$ = F19$ : GOSUB 2260
2620 T19$ = TEMP2$
2630 RETURN
2640 REM Routine to Extract Ordinance Information
2641 TEMP1$ = O2$ : TEMP2$ = O2$ : GOSUB 2260
2645 U2$ = TEMP2$  'Christening Date
2649 TEMP1$ = O4$ : TEMP2$ = O4$ : GOSUB 2260
2650 U4$ = TEMP2$  'Sealed to Parents
2659 TEMP1$ = O7$ : TEMP2$ = O7$ : GOSUB 2260
2660 U7$ = TEMP2$  'Baptism
2669 TEMP1$ = O10$ : TEMP2$ = O10$ : GOSUB 2260
2670 U10$ = TEMP2$  'Endowment
2679 TEMP1$ = O11$ : TEMP2$ = O11$ : GOSUB 2260
2680 U11$ = TEMP2$  'Sealed to Spouse
2690 TEMP1$ = O24$ : TEMP2$ = O24$ : GOSUB 2260
2700 U24$ = TEMP2$  'Occupation
2710 RETURN
2720 REM Extraction of Marriage Information
2730 TT1 = CVS(M1$)  'Rec.no
2740 TT2 = CVS(M2$)  'Husband
2750 TT3 = CVS(M3$)  'Wife
2760 TT4 = CVS(M4$)  'Code
2765 TEMP1$ = M5$ : TEMP2$ = M5$ : GOSUB 2260
2770 TT5$ = TEMP2$  'Marriage Date
2780 TEMP1$ = M6$ : TEMP2$ = M6$ : GOSUB 2260
2790 TT6$ = TEMP2$   'City
2800 TEMP1$ = M7$ : TEMP2$ = M7$ : GOSUB 2260
2810 TT7$ = TEMP2$   'County
2820 TEMP1$ = M8$ : TEMP2$ = M8$ : GOSUB 2260
2830 TT8$ = TEMP2$   'State
2840 RETURN
2850 REM Routine to Fill with Spaces
2860 FOR I = 1 TO 49
2870  FORM$(I) = SPACE$(132)
2880 NEXT I
2885 IF WIDE = 1 THEN GOSUB 7000
2890 REM Routine to Produce a Family Group Sheet
2900 REM get the marriage record
2910 GET #2, MARRIAGE
2920 PRINT "Obtaining Marriage Record"
2930 GOSUB 2720  'Extract Marriage Information
2940 HUSB = TT2 : WIFE = TT3
2950 REM Verify that record contains information
2960 IF HUSB = 0 OR WIFE = 0 THEN CLS : GOTO 2080
2961 REM
2962 REM Marriage Information onto line 4
2963 PRINT "Locate Marriage Information"
2964 MID$(FORM$(4),7,LEN(TT5$)) = TT5$
2965 IF TT6$ = "" AND TT7$ = "" AND TT8$ = "" THEN 2970
2966 MID$(FORM$(4),28,LEN(TT6$+TT7$+TT8$)+4) = TT6$+", "+TT7$+", "+TT8$
2970 REM Obtain the Husband's Information
2980 GET #1, HUSB
2990 PRINT "Obtaining Husband's Information"
3000 GOSUB 2310  'Extract Persons Information
3010 REM Now move the Husband's Information
3020 IF T2$ = "" AND T3$ = "" THEN 3050
3030 MID$(FORM$(1),10,LEN(T2$+T3$)+2) = T2$ + ", " + T3$
3040 MID$(FORM$(1),84,LEN(T2$+T3$)+9) = T2$+", "+T3$+" ("+RIGHT$(T8$,4)+")"
3050 MID$(FORM$(2),7,LEN(T8$)) = T8$
3060 IF T9$ = "" AND T10$ = "" AND T11$ = "" THEN 3080
3070 MID$(FORM$(2),28,LEN(T9$+T10$+T11$)+4) = T9$+", "+T10$+", "+T11$
3080 MID$(FORM$(5),7,LEN(T12$)) = T12$
3090 IF T13$ = "" AND T14$ = "" AND T15$ = "" THEN 3110
3100 MID$(FORM$(5),28,LEN(T13$+T14$+T15$)+4) = T13$+", "+T14$+", "+T15$
3110 MID$(FORM$(6),7,LEN(T16$)) = T16$
3120 IF T17$ = "" AND T18$ = "" AND T19$ = "" THEN 3140
3130 MID$(FORM$(6),28,LEN(T17$+T18$+T19$)+4) = T17$+", "+T18$+", "+T19$
3140 FATHER = T6 : MOTHER = T7
3150 IF FATHER = 0 THEN 3210
3160 GET #1, FATHER
3170 PRINT "Obtaining Husband's Father"
3180 GOSUB 2310  'Extract Father's Information
3190 IF T2$ = "" AND T3$ = "" THEN 3210
3200 MID$(FORM$(7),12,LEN(T2$+T3$)+2) = T2$+", "+T3$
3210 IF MOTHER = 0 THEN 3270
3220 GET #1, MOTHER
3230 PRINT "Obtaining Husband's Mother"
3240 GOSUB 2310  'Extract Mother's Information
3250 IF T2$ = "" AND T3$ = "" THEN 3270
3260 MID$(FORM$(7),58,LEN(T2$+T3$)+2) = T2$ + ", " + T3$
3270 REM
3280 REM Look for Husband's Other Wives
3290 PRINT "Look for Other Wives"
3300 XWIFE.COL = 0
3310 FOR W = 1 TO M.COUNT
3320  IF HUSB > PERS.NO(W) THEN 3460  'next w
3330  IF HUSB < PERS.NO(W) THEN W = M.COUNT : GOTO 3460
3340  REM found a wife, skip if wife of this marriage
3350  IF M.NO(W) = 0 THEN 3460
3360  GET #2, M.NO(W)
3370  GOSUB 2720  'extract marriage info
3380  IF WIFE = TT3 THEN 3460  'skip if same
3390  REM found another wife
3400  IF TT3 = 0 THEN 3460
3410  GET #1, TT3  'get wife's information
3420  GOSUB 2310  'extract personal info.
3430  IF T2$ = "" AND T3$ = "" THEN 3460  'skip if empty
3440  MID$(FORM$(8),12+XWIFE.COL,LEN(T2$+T3$)+2) = T2$+", "+T3$
3450  XWIFE.COL = XWIFE.COL + LEN(T2$+T3$)+4
3460 NEXT W
3470 REM Obtain the Wife's Information
3475 GET #1, WIFE
3480 PRINT "Obtaining Wife's Information"
3490 GOSUB 2310  'Extract Wife's Information
3500 REM Now move the Wife's Information
3510 IF T2$ = "" AND T3$ = "" THEN 3540
3520 MID$(FORM$(10),10,LEN(T2$+T3$)+2) = T2$ + ", " + T3$
3530 MID$(FORM$(2),84,LEN(T2$+T3$)+9) = T2$+", "+T3$+" ("+RIGHT$(T8$,4)+")"
3540 MID$(FORM$(11),7,LEN(T8$)) = T8$
3550 IF T9$ = "" AND T10$ = "" AND T11$ = "" THEN 3570
3560 MID$(FORM$(11),28,LEN(T9$+T10$+T11$)+4) = T9$+", "+T10$+", "+T11$
3570 MID$(FORM$(13),7,LEN(T12$)) = T12$
3580 IF T13$ = "" AND T14$ = "" AND T15$ = "" THEN 3600
3590 MID$(FORM$(13),28,LEN(T13$+T14$+T15$)+4) = T13$+", "+T14$+", "+T15$
3600 MID$(FORM$(14),7,LEN(T16$)) = T16$
3610 IF T17$ = "" AND T18$ = "" AND T19$ = "" THEN 3630
3620 MID$(FORM$(14),28,LEN(T17$+T18$+T19$)+4) = T17$+", "+T18$+", "+T19$
3630 FATHER = T6 : MOTHER = T7
3640 IF FATHER = 0 THEN 3700
3650 GET #1, FATHER
3660 PRINT "Obtaining Wife's Father"
3670 GOSUB 2310  'Extract Father's Information
3680 IF T2$ = "" AND T3$ = "" THEN 3700
3690 MID$(FORM$(15),12,LEN(T2$+T3$)+2) = T2$+", "+T3$
3700 IF MOTHER = 0 THEN 3760
3710 GET #1, MOTHER
3720 PRINT "Obtaining Wife's Mother"
3730 GOSUB 2310  'Extract Mother's Information
3740 IF T2$ = "" AND T3$ = "" THEN 3760
3750 MID$(FORM$(15),58,LEN(T2$+T3$)+2) = T2$ + ", " + T3$
3760 REM
3820 REM
3830 REM Look for Wife's Other Husbands
3840 PRINT "Look for Other Husbands"
3850 XHUSB.COL = 0
3860 FOR H = 1 TO M.COUNT
3870  IF WIFE > PERS.NO(H) THEN 4010  'next h
3880  IF WIFE < PERS.NO(H) THEN H = M.COUNT : GOTO 4010
3890  REM found a husband.  Skip if husband of this marriage
3900  IF M.NO(H) = 0 THEN 4010
3910  GET #2, M.NO(H)
3920  GOSUB 2720  'extract marriage info
3930  IF HUSB = TT2 THEN 4010  'skip if same
3940  REM found another husband
3950  IF TT2 = 0 THEN 4010
3960  GET #1, TT2  'get husband's information
3970  GOSUB 2310  'extract personal info.
3980  IF T2$ = "" AND T3$ = "" THEN 4010  'skip if empty
3990  MID$(FORM$(16),12+XHUSB.COL,LEN(T2$+T3$)+2) = T2$+", "+T3$
4000  XHUSB.COL = XHUSB.COL + LEN(T2$+T3$)+4
4010 NEXT H
4020 REM Obtain Husband's Ordinances
4030 PRINT "Obtaining Husband's Ordinances"
4040 IF HUSB = 0 THEN 4130
4050 GET #3, HUSB
4060 GOSUB 2640  'Extract Ordinances
4065 MID$(FORM$(3),7,LEN(U2$)) = U2$
4068 WH1 = 100 : WH2 = 111 ' Location of Baptism & Endowment
4069 IF WIDE = 1 THEN WH1 = 98 : WH2 = 110
4070 MID$(FORM$(17),WH1,LEN(U7$)) = U7$
4080 MID$(FORM$(17),WH2,LEN(U10$)) = U10$
4090 REM get Husband's Occupation
4100 PRINT "Obtaining Husband's Occupation"
4110 IF U24$ = "" THEN 4150
4120 MID$(FORM$(1),55,LEN(U24$)+2) = "("+U24$+")"
4130 REM Obtain Wife's Ordinances
4140 IF WIFE = 0 THEN 4250
4150 GET #3, WIFE
4160 PRINT "Obtaining Wife's Ordinances"
4170 GOSUB 2640  'Extract Ordinances
4175 MID$(FORM$(12),7,LEN(U2$)) = U2$
4180 MID$(FORM$(19),WH1,LEN(U7$)) = U7$
4190 MID$(FORM$(19),WH2,LEN(U10$)) = U10$
4200 MID$(FORM$(17),122,LEN(U11$)) = U11$
4210 REM get Wife's Occupation
4220 PRINT "Obtaining Wife's Occupation"
4230 IF U24$ = "" THEN 4250
4240 MID$(FORM$(10),55,LEN(U24$)+2) = "("+U24$+")"
4250 REM Now obtain the information about the Children
4260 CHILD.COUNT = 0
4300 REM Search the Parent/Child Index
4310 PRINT "Look for Children"
4320 XMARRCT = 0
4330 FOR LL = 1 TO PC.COUNT
4340  IF HUSB > PA.ID(LL) THEN 4930
4350  IF HUSB < PA.ID(LL) THEN LL = PC.COUNT : GOTO 4930
4360  REM found a child
4370  IF CH.ID(LL) = 0 THEN 4910
4380  GET #1, CH.ID(LL)
4390  GOSUB 2310  'Extract Personal Info.
4400  REM verify that Mother is the same
4410  IF WIFE <> T7 THEN 4930
4420  REM Found a valid child
4421  CHILD.COUNT = CHILD.COUNT + 1
4422  SHOW.COUNT = CHILD.COUNT
4423  IF CHILD.COUNT > 11 THEN SHOW.COUNT = CHILD.COUNT - 11
4424  IF CHILD.COUNT > 22 THEN SHOW.COUNT = CHILD.COUNT - 22
4425  IF CHILD.COUNT > 33 THEN SHOW.COUNT = CHILD.COUNT - 33
4426  IF CHILD.COUNT > 44 THEN SHOW.COUNT = CHILD.COUNT - 44
4430  REM test for more than 11 children
4431  IF CHILD.COUNT = 1 THEN 4458
4432  IF (CHILD.COUNT-1) MOD 11 = 0 THEN 4433 ELSE 4458
4433  GOSUB 4940 'print the current form, then blank out children
4434  FOR II = 20 TO 49
4435   FORM$(II) = SPACE$(132)
4436  NEXT II
4437  GOSUB 2140  'Next form
4438  SHOW.COUNT = 1
4439  XMARRCT = 0
4440 IF WIDE <> 1 THEN 4458
4441 REM Redraw Partial Form
4442 FOR II = 21 TO 41 STEP 2
4443  FORM$(II) = STRING$(132,95)
4444 NEXT II
4445 GOSUB 7210  'Redraw vertical separators
4458  SEX$ = T4$
4459  PRINT "Processing Child #";CHILD.COUNT
4460  MID$(FORM$(19+(2*SHOW.COUNT)),2,1) = T4$
4461  IF WIDE <> 1 THEN 4470
4462  FORM.NO$ = STR$(CHILD.COUNT)
4463  CH.FM = LEN(FORM.NO$)-1
4464  FORM.NO$ = RIGHT$(FORM.NO$,CH.FM)
4465  MID$(FORM$(18+(2*SHOW.COUNT)),3-CH.FM,CH.FM) = FORM.NO$
4470  MID$(FORM$(18+(2*SHOW.COUNT)),4,LEN(T2$)+1) = T2$+","
4471  MID$(FORM$(19+(2*SHOW.COUNT)),5,LEN(T3$)) = T3$
4472  REM Position Birthdate if Drawing the Form
4473  VV = 28
4474  IF WIDE = 1 THEN VV = 29
4480  MID$(FORM$(18+(2*SHOW.COUNT)),VV,LEN(T8$)) = T8$
4490  MID$(FORM$(18+(2*SHOW.COUNT)),41,LEN(T9$)) = T9$
4494  REM Set Width of County and State
4495  V = 4
4496  IF WIDE = 1 THEN V = 5
4500  MID$(FORM$(18+(2*SHOW.COUNT)),60,V) = LEFT$(T10$,V)
4510  MID$(FORM$(18+(2*SHOW.COUNT)),66,V) = LEFT$(T11$,V)
4520  MID$(FORM$(18+(2*SHOW.COUNT)),85,LEN(T12$)) = T12$
4530  REM Now get Child's Ordinances
4540  GET #3, CH.ID(LL)
4550  PRINT "Obtain Child's Ordinances"
4560  GOSUB 2640  'Extract Ordinances
4570  MID$(FORM$(18+(2*SHOW.COUNT)),WH1,LEN(U7$)) = U7$
4580  MID$(FORM$(18+(2*SHOW.COUNT)),WH2,LEN(U10$)) = U10$
4590  MID$(FORM$(18+(2*SHOW.COUNT)),122,LEN(U4$)) = U4$
4600  REM Now look for Child's Marriage
4610  PRINT "Look for Child's Marriage"
4620  FOUND = 0
4630  FOR L = 1 TO M.COUNT
4640   IF CH.ID(LL) > PERS.NO(L) THEN 4920
4650   IF CH.ID(LL) < PERS.NO(L) THEN L = M.COUNT : GOTO 4920
4660   REM Found a Marriage
4670   IF M.NO(L) = 0 THEN 4910
4680   FOUND = FOUND + 1
4690   GET #2, M.NO(L)
4700   GOSUB 2720  'Extract Marriage Information
4710   IF FOUND <> 1 THEN 4730
4720   MID$(FORM$(19+(2*SHOW.COUNT)-1),72,LEN(TT5$)) = TT5$
4730   REM get spouse
4740   SPOUSE = 0
4750   IF SEX$ = "M" THEN SPOUSE = TT3
4760   IF SEX$ = "F" THEN SPOUSE = TT2
4770   IF SPOUSE = 0 THEN 4910
4780   GET #1, SPOUSE
4790   GOSUB 2310  'Extract Spouse's Information
4800   IF FOUND = 1 THEN 4890
4810   XMARRCT = XMARRCT + 1
4820   CH$ = SPACE$(2)
4830   RSET CH$ = RIGHT$((STR$(CHILD.COUNT)),2)
4840   MID$(FORM$(42+XMARRCT),60,4) = CH$+" -"
4850   IF T2$ = " " AND T3$ = " " THEN 4880
4860   MID$(FORM$(42+XMARRCT),77,LEN(T2$+T3$)+2) = T2$+", "+T3$
4870   MID$(FORM$(42+XMARRCT),65,LEN(TT5$)) = TT5$
4880   GOTO 4910
4890   IF T2$ = " " AND T3$ = " " THEN 4910
4900   MID$(FORM$(19+(2*SHOW.COUNT)),72,LEN(T2$+T3$)+2) = T2$+", "+T3$
4910  REM finished with this child
4920  NEXT L
4930 NEXT LL
4935 GOSUB 4940 : GOTO 5030
4940 REM enter sources
4950 COMM$ = "Genealogy ON DISPLAY Computerized Data Base"
4960 MID$(FORM$(43),2,LEN(COMM$)) = COMM$
4962 MAR.NUM$ = STR$(MARRIAGE)
4963 MAR.NUM$ = RIGHT$(MAR.NUM$,LEN(MAR.NUM$)-1)
4964 MAR.DATA$ = "Marriage Record: " + MAR.NUM$
4965 MID$(FORM$(44),2,LEN(MAR.DATA$)) = MAR.DATA$
4966 MID$(FORM$(45),2,21) = "Prepared:  " + DATE$
4967 MID$(FORM$(46),2,19) = "At (time): " + TIME$
4970 PRINT "Ready to Print"
4980 REM Print the Family Group Sheet
4990 FOR I = 1 TO 49
4995 PRINT "Printing line: ";I
5000  LPRINT FORM$(I);
5010 NEXT I
5015 CLS
5020 LPRINT CHR$(12);
5025 RETURN
5030 GOTO 2080  'for Next Group Sheet
5040 REM Wrapup
5050 LPRINT CHR$(18);     'Normal Printing
5060 LPRINT CHR$(27)"9";  'Paper Sensing ON
5070 LPRINT CHR$(27)"A";  'Normal Page of 66 Lines
5080 CLOSE #1
5090 CLOSE #2
5100 CLOSE #3
5110 CLS : LOCATE 21,1
5120 PRINT "End of Program"
5130 LPRINT CHR$(12);     'Page Eject
5140 LPRINT CHR$(12);     'Page Eject
5150 RUN "a:menu"
7000 REM Draw the Form Itself
7010 PRINT "Preparing the Form."
7020 REM Draw the Horizontal Lines
7030 PRINT "Drawing the Horizontal Lines in Rows:"
7040 FOR II = 1 TO 8
7050  PRINT II;
7060  FORM$(II) = STRING$(132,95)
7070 NEXT II
7080 PRINT
7090 MID$(FORM$(1),83,1) = CHR$(124)
7100 MID$(FORM$(2),83,1) = CHR$(124)
7110 FOR II = 10 TO 16
7120  PRINT II;
7130  FORM$(II) = STRING$(132,95)
7140 NEXT II
7142 MID$(FORM$(9),98,35) = STRING$(35,95)
7144 MID$(FORM$(16),98,35) = SPACE$(35)
7150 PRINT
7160 FOR II = 17 TO 41 STEP 2
7170  PRINT II;
7180  FORM$(II) = STRING$(132,95)
7190 NEXT II
7200 PRINT
7210 REM draw the vertical lines
7220 PRINT "Drawing the Vertical Lines in Rows:"
7230 FOR II = 18 TO 41
7240  PRINT II;
7250  MID$(FORM$(II),1,1) = CHR$(124)
7260  MID$(FORM$(II),3,1) = CHR$(124)
7270  MID$(FORM$(II),28,1) = CHR$(124)
7280  MID$(FORM$(II),40,1) = CHR$(124)
7290  MID$(FORM$(II),59,1) = CHR$(124)
7300  MID$(FORM$(II),65,1) = CHR$(124)
7310  MID$(FORM$(II),71,1) = CHR$(124)
7320  MID$(FORM$(II),97,1) = CHR$(124)
7330 NEXT II
7340 PRINT
7350 FOR II = 42 TO 49
7360  PRINT II;
7370  MID$(FORM$(II),1,1) = CHR$(124)
7380  MID$(FORM$(II),59,1) = CHR$(124)
7390  MID$(FORM$(II),97,1) = CHR$(124)
7400 NEXT II
7410 PRINT
7420 PRINT "Drawing Boxes in Rows:"
7430 FOR II = 18 TO 40 STEP 2
7440 PRINT II;
7450  FOR JJ = 72 TO 96
7460   MID$(FORM$(II),JJ,1) = CHR$(95)
7470  NEXT JJ
7480 NEXT II
7490 PRINT
7500 FOR II = 18 TO 40 STEP 2
7510  PRINT II;
7520  MID$(FORM$(II),84,1) = CHR$(124)
7530 NEXT II
7540 PRINT
7550 REM Put the titles in place
7560 PRINT "Preparing Titles and Numbers"
7570 MID$(FORM$(18),11,8) = "CHILDREN"
7580 MID$(FORM$(18),30,9) = "WHEN BORN"
7590 MID$(FORM$(18),56,10) = "WHERE BORN"
7600 MID$(FORM$(18),72,11) = "1st MARRIED"
7610 MID$(FORM$(18),86,9) = "WHEN DIED"
7620 MID$(FORM$(19),4,20) = "SURNAME, Given Names"
7630 MID$(FORM$(19),29,11) = "DA MON YEAR"
7640 MID$(FORM$(19),45,5) = "TOWN"
7650 MID$(FORM$(19),60,4) = "CNTY"
7660 MID$(FORM$(19),66,4) = "STA."
7670 MID$(FORM$(19),72,15) = "TO WHOM MARRIED"
7680 MID$(FORM$(42),2,22) = "SOURCES OF INFORMATION"
7690 MID$(FORM$(42),60,15) = "OTHER MARRIAGES"
7700 MID$(FORM$( 1),1,5) = "HUSB:"
7710 MID$(FORM$(2), 1,5) = "Born:"
7720 MID$(FORM$(2),20,6) = "Place:"
7730 MID$(FORM$(3), 1,4) = "Chr:"
7740 MID$(FORM$(3),20,6) = "Place:"
7750 MID$(FORM$(4), 1,5) = "Marr:"
7760 MID$(FORM$(4),20,6) = "Place:"
7770 MID$(FORM$(5), 1,5) = "Died:"
7780 MID$(FORM$(5),20,6) = "Place:"
7790 MID$(FORM$(6), 1,4) = "Bur:"
7800 MID$(FORM$(6),20,6) = "Place:"
7810 MID$(FORM$(7), 1,7) = "Father:"
7820 MID$(FORM$(7),49,7) = "Mother:"
7830 MID$(FORM$(8), 1,6) = "Wives:"
7840 MID$(FORM$(10),1,5) = "WIFE:"
7850 MID$(FORM$(11),1,5) = "Born:"
7860 MID$(FORM$(11),20,6) = "Place:"
7870 MID$(FORM$(12), 1,4) = "Chr:"
7880 MID$(FORM$(12),20,6) = "Place:"
7890 MID$(FORM$(13), 1,5) = "Died:"
7900 MID$(FORM$(13),20,6) = "Place:"
7910 MID$(FORM$(14), 1,4) = "Bur:"
7920 MID$(FORM$(14),20,6) = "Place:"
7930 MID$(FORM$(15), 1,7) = "Father:"
7940 MID$(FORM$(15),49,7) = "Mother:"
7950 MID$(FORM$(16), 1,9) = "Husbands:"
8020 FOR II = 3 TO 17
8030  MID$(FORM$(II),97,1) = CHR$(124)
8040 NEXT II
8050 REM Put in the Descriptions
8060 MID$(FORM$(42), 98,22) = "NECESSARY EXPLANATIONS"
8070 MID$(FORM$(14),106,19) = "LDS ORDINANCE DATA"
8071 REM Draw Ordinance Separators
8072 FOR II = 15 TO 41
8073  MID$(FORM$(II),109,1) = CHR$(124)
8074  MID$(FORM$(II),121,1) = CHR$(124)
8075 NEXT II
8080 MID$(FORM$(15), 99,8) = "BAPTIZED"
8090 MID$(FORM$(15),111,7) = "ENDOWED"
8100 MID$(FORM$(15),123,6) = "SEALED"
8110 MID$(FORM$(16),106,7) = "HUSBAND"
8115 MID$(FORM$(16),123,10) = "WIFE/HUSB."
8120 MID$(FORM$(18),107,4) = "WIFE"
8130 MID$(FORM$(18),123,8) = "CHILDREN"
8140 MID$(FORM$(19),123,6) = "SEALED"
8150 RETURN
